package com.itaming.lycheeframework.security.token.provider;

import com.itaming.lycheeframework.security.exception.AuthenticationException;

import java.util.Map;

/**
 * Token提供者接口
 *
 * @author A.Ming
 */
public interface TokenProvider {

    /**
     * 创建Token
     *
     * @param payload   载荷
     * @param expiresIn 过期时间(秒）
     * @return Token
     */
    String createToken(Map<String, ?> payload, int expiresIn);

    /**
     * 解析Token
     *
     * @param token token
     * @return 载荷
     * @throws AuthenticationException 解析失败时抛出，如：Token过期、Token无效等
     */
    Map<String, Object> parseToken(String token) throws AuthenticationException;

}
